home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / Pascal / Code Resources / Ingis WDEF 1.3 / Demo ƒ / Simple ƒ / CustomStubs.p next >
Text File  |  1997-05-09  |  7KB  |  192 lines

  1. { *** DEMO FOR the IngisWDEF WDEF building package *** }
  2.  
  3. {© 1994-1995 by Ingemar Ragnemalm}
  4. {You may use it freely as long as credits are given in the final program.}
  5.  
  6.  
  7. {A simple example window. Rounded rect with a drag bar that is narrower than the content region. Window name}
  8. {not drawn; the drag area is painted blue/black. Supports close box but no zoom or grow boxes.}
  9. {}
  10. {In this example, many routines are left empty. Only the folowing routines are used: GetCloseBox, DrawCloseBox,}
  11. {DrawHitCloseBox, DrawDragBar and BuildCustomRegions. Can it be simpler?}
  12.  
  13.  
  14. {This unit holds all custom code}
  15.  
  16. unit CustomStubs;
  17.  
  18. interface
  19.     uses
  20. {$IFC UNDEFINED THINK_PASCAL}
  21.         Types, QuickDraw, ToolUtils, Windows, Events, OSUtils, 
  22. {$ENDC}
  23.         IngisWDEFUtils;
  24.  
  25.     procedure GetGrowRgn (varCode: integer; macWindow: WindowPeek; var growRgn: RgnHandle);
  26.     procedure GetCloseBox (varCode: integer; dragBar: RgnHandle; var closeBox: Rect);
  27.     procedure GetZoomBox (varCode: integer; dragBar: RgnHandle; var zoomBox: Rect);
  28.     procedure DrawCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  29.     procedure DrawZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  30.     procedure DrawHitCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  31.     procedure DrawHitZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  32.     procedure DrawDragBar (varCode: integer; macWindow: WindowPeek; dragBar: RgnHandle; colorFlag: Boolean);
  33.     procedure BuildCustomRegions (varCode: integer; theRect: Rect; contRgn, dragRgn: RgnHandle);
  34.     procedure DrawScrollFrame (varCode: integer; macWindow: WindowPeek; theRect: Rect);
  35.     procedure DrawTheGrowIcon (varCode: integer; macWindow: WindowPeek; theRect: Rect; growRgn: RgnHandle; colorFlag: Boolean);
  36.     procedure InitMyWindow (varCode: integer; macWindow: WindowPeek);
  37.     procedure DisposeMyWindow (varCode: integer; macWindow: WindowPeek);
  38.  
  39. {** Constants **}
  40.     const
  41.         kFrameWidth = 1;        { Thickness of frame around window. 1 is normal.}
  42.         kShadowLength = 1;        { Size of drop shadow. 1 is normal.}
  43.         kMinDepthForColor = 4;    { Smallest pixel size for color. 8 (256 colors) is normal. }
  44.         kMinWidth = 100;        { Limits for the dragging rectangle? }
  45.         kMinHeight = 100;
  46.  
  47.     type
  48.         MyDataRecord = record
  49.                 theWindowState: WStateData;
  50. {Insert any globals you need here!}
  51.             end;
  52.         MyDataPtr = ^MyDataRecord;
  53.         MyDataHandle = ^MyDataPtr;
  54.  
  55. implementation
  56.  
  57. {*****************************************************************************}
  58. { GetGrowRgn}
  59. {        Return the region with the grow icon, if any.}
  60. { *****************************************************************************}
  61.  
  62.     procedure GetGrowRgn (varCode: integer; macWindow: WindowPeek; var growRgn: RgnHandle);
  63.     begin
  64. {We don't support resizing}
  65.     end;
  66.  
  67. {*****************************************************************************}
  68. { GetCloseBox}
  69. {        Pass back a rectangle which encloses the close box of the window}
  70. { *****************************************************************************}
  71.  
  72.     procedure GetCloseBox (varCode: integer; dragBar: RgnHandle; var closeBox: Rect);
  73.     begin
  74.         with dragBar^^.rgnBBox do
  75.             SetRect(closeBox, left + 5, top + 3, left + 5 + (bottom - top - 4) - 2, bottom - 3);
  76.     end;
  77.  
  78.     procedure GetZoomBox (varCode: integer; dragBar: RgnHandle; var zoomBox: Rect);
  79.     begin
  80. {No zoom box}
  81.     end;
  82.  
  83. {*****************************************************************************}
  84. { Draw close box and zoom box, in normal and hit state }
  85. {        Draw the close box in "hit" state. This can be as simple as an InvertRect. }
  86. { *****************************************************************************}
  87.  
  88.     procedure DrawCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  89.     begin
  90.         StdCloseBox(closeBox, colorFlag);
  91.     end; {}
  92.     procedure DrawZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  93.     begin
  94. {No zoom box}
  95.     end; {}
  96.     procedure DrawHitCloseBox (varCode: integer; macWindow: WindowPeek; closeBox: Rect; colorFlag: Boolean);
  97.     begin
  98. {InvertRect(closeBox);}
  99.         if colorFlag then
  100.             begin
  101. {$IFC UNDEFINED THINK_PASCAL}
  102.                 RGBForeColor ( BoxShadowColor ( ) );
  103.                 RGBBackColor ( BoxFillColor ( ) );
  104. {$ELSEC}
  105.                 RGBForeColor(BoxShadowColor);
  106.                 RGBBackColor(BoxFillColor);
  107. {$ENDC}
  108.             end;
  109.         DrawStdCloseHit(closeBox);
  110.     end; {}
  111.     procedure DrawHitZoomBox (varCode: integer; macWindow: WindowPeek; zoomBox: Rect; colorFlag: Boolean);
  112.     begin
  113.     end; {}
  114.  
  115. {*****************************************************************************}
  116. { DrawDragBar, BW and Color version}
  117. {        Draw the drag bar (not close box/zoom box)}
  118. { *****************************************************************************}
  119.  
  120.     procedure DrawDragBar (varCode: integer; macWindow: WindowPeek; dragBar: RgnHandle; colorFlag: Boolean);
  121.     begin
  122.         if colorFlag then
  123.             if macWindow^.hilited then
  124. {$IFC UNDEFINED THINK_PASCAL}
  125.                 RGBForeColor ( BoxShadowColor ( ) )
  126.             else
  127.                 RGBForeColor ( SurroundColor ( ) );
  128. {$ELSEC}
  129.         RGBForeColor(BoxShadowColor)
  130.         else
  131.             RGBForeColor(SurroundColor);
  132. {$ENDC}
  133.         PaintRgn(dragBar);
  134.     end; {DrawDragBar}
  135.  
  136. {*****************************************************************************}
  137. { BuildCustomRegions}
  138. {        Build the contents region and the drag bar region}
  139. { *****************************************************************************}
  140.  
  141.     procedure BuildCustomRegions (varCode: integer; theRect: Rect; contRgn, dragRgn: RgnHandle);
  142.         var
  143.             tmpRect: Rect;
  144.     begin
  145.         OpenRgn;
  146.         FrameRoundRect(theRect, 10, 10);
  147.         CloseRgn(contRgn);
  148.  
  149.         tmpRect := theRect;
  150.         InsetRect(tmpRect, 15, 0);
  151.         OffsetRect(tmpRect, 0, -18);
  152.         OpenRgn;
  153.         FrameRoundRect(tmpRect, 10, 10);
  154.         CloseRgn(dragRgn);
  155.     end; {BuildCustomRegions}
  156.  
  157. {*****************************************************************************}
  158. { DrawScrollFrame}
  159. {        Draw the scroll frame, if any (used both when resizing and when drawing the grow icon) }
  160. { *****************************************************************************}
  161.  
  162.     procedure DrawScrollFrame (varCode: integer; macWindow: WindowPeek; theRect: Rect);
  163.     begin
  164. {No scroll frame - no resizing}
  165.     end; {DrawScrollFrame}
  166.  
  167. {*****************************************************************************}
  168. { DrawTheGrowIcon, BW and Color version}
  169. {        Draw the grow icon, if any }
  170. { *****************************************************************************}
  171.  
  172.     procedure DrawTheGrowIcon (varCode: integer; macWindow: WindowPeek; theRect: Rect; growRgn: RgnHandle; colorFlag: Boolean);
  173.     begin
  174. {No grow}
  175.     end; {DrawTheGrowIcon}
  176.  
  177. {*****************************************************************************}
  178. { InitMyWindow and DisposeMyWindow }
  179. {        Can often be empty. Set the spareFlag in InitMyWindow if the variant should have a zoom box. }
  180. {        InitMyWindow may initialize any globals in MyDataHandle(macWindow^.dataHandle). }
  181. {        DisposeMyWindow must restore/dispose fields in MyDataHandle(macWindow^.dataHandle) as needed. }
  182. { *****************************************************************************}
  183.  
  184.     procedure InitMyWindow (varCode: integer; macWindow: WindowPeek);
  185.     begin
  186. {No zoom}
  187.     end; {}
  188.     procedure DisposeMyWindow (varCode: integer; macWindow: WindowPeek);
  189.     begin
  190.     end; {}
  191.  
  192. end.